/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.util;

import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 *
 * @author José Revuelta Jiménez
 */
public class UtilidadesFecha {
    
    public static Fecha obtener_dia_anterior(Fecha fecha){
        Fecha fa = new Fecha();
        if (fecha.dia == 1){
            if (fecha.mes == 1){
                fa.ano = fecha.ano -1;
                fa.mes = 12;
            }
            else{
                fa.mes = fecha.mes -1;                        
            }
                fa.dia = Calendar.getInstance().getActualMaximum(fa.mes);
            
        }
        else{
            fa.dia = fecha.dia-1;      
        }
    
        
     return fa;   
    }
            
    public static Fecha obtener_mes_anterior (Fecha fecha){
        Fecha fa = new Fecha(); 
        Calendar c = Calendar.getInstance();
        c.setTime(fa.date);
        if (fecha.mes == 1){
            fa.ano = fecha.ano -1;
            fa.mes = 12;
        }
        else{
            fa.mes = fecha.mes -1;
        }
        return fa;
    }
         
       
    public static Fecha obtener_ano_anterior (Fecha fecha){
        Fecha fa = new Fecha();
        fa.ano = fecha.ano -1;
        return fa;
    }
    
    public static int obtener_ultimo_mes(int ano,int mes,int dia){
        int d =0;
        Calendar c = Calendar.getInstance();
        c= new GregorianCalendar();
        c.set(ano, mes, dia);
        d = c.getActualMaximum(Calendar.DAY_OF_MONTH);
        if (mes == 1 && d ==31 )
            d=28;
        return(d);
        
    }
    
  
    
         
         
    public static long numeroDiasEntreFechas(Fecha fecha1, Fecha fecha2){
        long diferencia = fecha1.date.getTime() - fecha2.date.getTime();
        if (diferencia < 0){
            diferencia = diferencia * -1;
        }
        diferencia = diferencia / 86400000;
        return diferencia;
    }
    public static long numeroDiasEntreFechas_nozero (Fecha fecha1, Fecha fecha2){
        long resultado = numeroDiasEntreFechas(fecha1, fecha2);
        if(resultado == 0){
            resultado = 1;
        }
     return resultado;   
    }
    
    public static Fecha obtener_fecha_long(long tiempo){
         
        Fecha fe = new Fecha();
        fe.segundos = (int) (tiempo / 1000) % 60 ;
        fe.minutos = (int) ((tiempo / (1000*60)) % 60);
        fe.hora   = (int) ((tiempo / (1000*60*60)) % 24);
        return fe;
    }
    
    
    public static String obtener_nombre_mes_str(int mes){
        String resultado ="";
        switch (mes) {
                case 1:
                    resultado ="Enero";
                    break;
                case 2:
                    resultado ="Febrero";
                    break;
                case 3:
                    resultado ="Marzo";
                    break;
                case 4:
                    resultado ="Abril";
                    break;
                case 5:
                    resultado ="Mayo";
                    break;
                case 6:
                    resultado ="Junio";
                    break;
                case 7:
                    resultado ="Julio";
                    break;
                case 8:
                    resultado ="Agosto";
                    break;
                case 9:
                    resultado ="Septiembre";
                    break;
                case 10:
                    resultado ="Octubre";
                    break;
                case 11:
                    resultado ="Noviembre";
                    break;
                case 12:
                    resultado ="Dicicembre";
                    break;

            };
            return resultado;
    }
    
    
    public static String obtener_nombre_mes_str_3c(int mes){
        String resultado ="";
        switch (mes) {
                case 1:
                    resultado ="ENE";
                    break;
                case 2:
                    resultado ="FEB";
                    break;
                case 3:
                    resultado ="MAR";
                    break;
                case 4:
                    resultado ="ABR";
                    break;
                case 5:
                    resultado ="MAY";
                    break;
                case 6:
                    resultado ="JUN";
                    break;
                case 7:
                    resultado ="JUL";
                    break;
                case 8:
                    resultado ="AGO";
                    break;
                case 9:
                    resultado ="SEP";
                    break;
                case 10:
                    resultado ="OCT";
                    break;
                case 11:
                    resultado ="NOV";
                    break;
                case 12:
                    resultado ="DIC";
                    break;

            };
            return resultado;
    }
    
    public static int horadeldiaabierto(){
        Fecha faux = new Fecha();
        int nhora = 0;
        switch (faux.hora) {
            case 9:
                nhora = 1;
                break;
            case 10:
                nhora = 2;
                break;
            case 11:
                nhora = 3;
                break;
            case 12:
                nhora = 4;
                break;
            case 13:
                nhora = 5;
                break;
            case 17:
                nhora = 6;
                break;
            case 18:
                nhora = 7;
                break;
            case 19:
                nhora = 8;
                break;
            case 20:
                nhora = 9;
                break;
            case 21:
                nhora = 10;

        };
        if (faux.hora > 13 && faux.hora < 17) {
            nhora = 5;
        }
        if (faux.hora > 21) {
            nhora = 10;
        }
        if (faux.hora < 9 && faux.hora > 7) {
            nhora = 1;
        }
        return nhora;
    }
}
